package cn.iocoder.yudao.module.lowcode.service.table;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 修改表结构请求
 *
 * @author 芋道源码
 */
@Data
public class AlterTableRequest {

    /**
     * 表名
     */
    @NotBlank(message = "表名不能为空")
    private String tableName;

    /**
     * 表注释
     */
    private String tableComment;

    /**
     * 数据源ID
     */
    @NotNull(message = "数据源ID不能为空")
    private Long dataSourceId;

    /**
     * 变更操作列表
     */
    private List<TableAlterOperation> operations;

    /**
     * 是否自动更新 Magic API 接口
     */
    private Boolean autoUpdateApi = true;

    @Data
    public static class TableAlterOperation {
        /**
         * 操作类型：ADD_COLUMN, DROP_COLUMN, MODIFY_COLUMN, RENAME_COLUMN
         */
        private String operationType;

        /**
         * 字段名（旧字段名，用于 DROP_COLUMN 和 RENAME_COLUMN）
         */
        private String fieldName;

        /**
         * 新字段名（用于 RENAME_COLUMN）
         */
        private String newFieldName;

        /**
         * 字段定义（用于 ADD_COLUMN 和 MODIFY_COLUMN）
         */
        private CreateTableRequest.TableFieldDefinition fieldDefinition;
    }
}